﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for Calendario
/// </summary>
namespace Util
{
    /// <summary>
    /// Listado de Meses del año
    /// </summary>
    public enum eMeses { 
        Enero,
        Febrero,
        Marzo,
        Abril,
        Mayo,
        Junio,
        Julio,
        Agosto,
        Septiembre,
        Octubre, 
        Noviembre,
        Diciembre
    }

    /// <summary>
    /// Crea un objeto calendario, con todos los meses.
    /// </summary>
    public class Calendario : Disposable
    {
        private List<Meses> Meses { get; set; }
        public int Anyo { get; set; }
        
        #region Contructor.
            public Calendario(int anyo)
            {
                this.Anyo = anyo;
                CargaMeses();
            }

            public Calendario()
            {
                this.Anyo = DateTime.Now.Year;
                CargaMeses();
            }
        #endregion

            /// <summary>
        /// Obtiene la fecha de inicio del mes indicado.
        /// </summary>
        /// <param name="mes">Mes a devolver</param>
        /// <returns></returns>
        public DateTime GetFechaMes (eMeses mes)
        {
            return Meses.Find(m => m.Mes == mes).FechaInicio;
        }
        /// <summary>
        /// Carga el listado de Meses del año.
        /// </summary>
        private void CargaMeses()
        {
            Meses = new List<Meses> 
            {
                new Meses{ FechaInicio = DateTime.Parse("01/01/" +Anyo ), Mes = Util.eMeses.Enero},
                new Meses{ FechaInicio = DateTime.Parse("01/02/" +Anyo ), Mes = Util.eMeses.Febrero},
                new Meses{ FechaInicio = DateTime.Parse("01/03/" +Anyo ), Mes = Util.eMeses.Marzo},
                new Meses{ FechaInicio = DateTime.Parse("01/04/" +Anyo ), Mes = Util.eMeses.Abril},
                new Meses{ FechaInicio = DateTime.Parse("01/05/" +Anyo ), Mes = Util.eMeses.Mayo},
                new Meses{ FechaInicio = DateTime.Parse("01/06/" +Anyo ), Mes = Util.eMeses.Junio},
                new Meses{ FechaInicio = DateTime.Parse("01/07/" +Anyo ), Mes = Util.eMeses.Julio},
                new Meses{ FechaInicio = DateTime.Parse("01/08/" +Anyo ), Mes = Util.eMeses.Agosto},
                new Meses{ FechaInicio = DateTime.Parse("01/09/" +Anyo ), Mes = Util.eMeses.Septiembre},
                new Meses{ FechaInicio = DateTime.Parse("01/10/" +Anyo ), Mes = Util.eMeses.Octubre},
                new Meses{ FechaInicio = DateTime.Parse("01/11/" +Anyo ), Mes = Util.eMeses.Noviembre},
                new Meses{ FechaInicio = DateTime.Parse("01/12/" +Anyo ), Mes = Util.eMeses.Diciembre},
            };
        }
    }
    /// <summary>
    /// Esta clase representa a un mes del año.
    /// </summary>
    public class Meses : Disposable
    {
        public DateTime FechaInicio{get;set;}
        public eMeses Mes {get;set;}
    }
}